Ниже приведены примеры файлов макросценариев, содержащих макрокоманды SURFERа. Эти демонстрационные примеры показывают, как следует создавать макросценарии, а также некоторые возможности GS Scripterа. Приведенные образцы можно выполнить с помощью программы GS Scripter.
Образец 1 (Файл SAMPLE1.BAS )
В данном макросценарии для каждого метода построения сети выполняются следующие действия:
1. Строится сеть по заданному файлу данных.
2. Создается карта изолиний.
3 Построенная страница выводится на печать.
‘ Создать объект SURFERа SET Surf = CreateObject("Surfer.App") ‘ Выполнить следующую группу операций для каждого метода ‘ построения сети FOR Method = 0 TO 6 ‘ Открыть новое окно Графика Surf.FileNew() ‘ Построить сеть по файлу данных с помощью текущего метода IF Surf.GridData("DEMOGRID.DAT", gridMethod=Method, OutGrid="SAMPLE") = 0 THEN END ‘ Построить карту изолиний по созданному сеточному файлу IF Surf.MapContour("SAMPLE") = 0 THEN END ‘ Для того, чтобы напечатать текущую страницу, снимите ‘ символ комментария со следующей строки 'Surf.FilePrint() NEXT
Образец 2 (Файл SAMPLE2.BAS )
Данный пример демонстрирует элементарный шаблон макросценария. В первой строке макросценария задается исходный файл данных. После этого строятся карта изолиний и график поверхности.
Рассмотренную процедуру можно использовать для любого файла данных; для этого достаточно соответствующим образом изменить значение аргумента InFile$.
‘ Задать входной файл данных и выходной сеточный файл InFile$ = "DEMOGRID.DAT" OutFile$ = "SAMPLE" ‘ Создать объект SURFERа SET Surf = CreateObject("Surfer.App") ‘ Создать новое окно Графика Surf.FileNew() ‘ Построить сеть по заданному файлу данных IF Surf.GridData(InFile$, GridMethod=1, SearchRad1=4.53, SearchRad2=4.53, OutGrid=OutFile$) = 0 THEN END ‘ Построить закрашенную карту изолиний IF Surf.MapContour(OutFile$, Flags=1, ID="Contour #1") = 0 THEN END ‘ Выделить карту изолиний Surf.Select("Contour #1") ‘ Переместить и изменить размер выделенной карты Surf.TransformSel(Left=1, Bottom=0, Width=7, Height=5) ‘ Построить график поверхности IF Surf.MapSurface(OutFile$, xLineColor="Blue", yLineColor="Blue", ID="Surface #1") = 0 THEN END ‘ Выделить график поверхности Surf.Deselect() Surf.Select(ID="Surface #1") ‘ Переместить и изменить размер выделенного графика Surf.TransformSel(Left=1, Bottom=6, Width=7, Height=5)
Образец 3 (Файл SAMPLE3.BAS)
Данный макросценарий создает несколько карт по одному файлу данных. Файл данных организован в столбцы, соответствующие значениям X, Y, Z1, Z2, и т.д. Карты изолиний строятся для каждого подмножества данных: X,Y,Z1; X,Y,Z2; и т.д.)
Первая строка файла данных содержит заголовки столбцов, которые используются в качестве заголовков соответствующих карт.
‘ Задать входной файл данных File$ = "SAMPLE3" ‘ Создать объект SURFERа SET Surf = CreateObject("Surfer.App") ‘ Загрузить файл данных в окно Рабочего листа hWnd = Surf.FileOpen(File$+".DAT",1) IF hWnd = 0 THEN END ‘ Создать новое окно Графика Surf.FileNew() ‘ Отключить автоматическое перерисовывание, чтобы операции ‘ выполнялись быстрее Surf.ViewAutoRedraw(0) ‘ Выполнить следующую группу операций для каждого ‘ столбца Z ... FOR iMap=0 TO 5 ‘ Сформировать заголовок карты путем конкатенации заголовков ‘ столбцов, находящихся в первой строке Рабочего листа Title$ = Surf.GetWksCell(hWnd,0,0) + \ Surf.GetWksCell(hWnd,0,1) + \ Surf.GetWksCell(hWnd,0,iMap+2) ‘ Построить сеть по текущим X,Y,Z данны IF Surf.GridData(File$+".DAT", xCol=0, yCol=1, zCol=iMap+2) = 0 THEN END ‘ Создать карту изолиний IF Surf.MapContour(File$, ID=Title$) = 0 THEN END ‘ Выделить текущую созданную карту Surf.Deselect() Surf.Select(Title$) ‘ Определить положение карты на странице Width = 3 Height = 3 Left = 0.5 + int(iMap/3) * (Width+1) Bottom = 0.5 + (iMap mod 3) * (Height+.5) ‘ Переместить карту в заданное место на странице Surf.TransformSel(Left,Bottom,Width,Height) ‘ Вывести заголовок карты Surf.DrawText(Left+Width/2-.5, Bottom-.1, "Plot of " + Title$) NEXT ‘ Включить обратно автоматическое перерисовывание ‘ и перерисовать окно Surf.ViewAutoRedraw(1) Surf.ViewRedraw()